package com.probox.common.entity.mapper.centre;


import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.probox.common.entity.domain.centre.OrderInfo;
import com.probox.common.entity.vo.centre.customer.CustomerQueryVo;
import com.probox.common.entity.vo.centre.order.OrderDataVo;
import com.probox.common.entity.vo.centre.order.OrderQueryVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;

/**
 * 订单子Mapper接口
 *
 * @author hds
 * @date 2021-06-24
 */
@DS("order")
@Mapper
public interface CentreOrderInfoMapper extends BaseMapper<OrderInfo> {

    /**
     * 查询订单总金额 、总订单数量
     *
     * @param orderQueryVo
     * @return
     */
    OrderDataVo selectOrderCollect(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 查询订单交易总金额 、交易总订单数量
     *
     * @param orderQueryVo
     * @return
     */
    OrderDataVo selectMakeOrderCollect(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    BigDecimal sumPayAmount(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 查询取消单数、取消金额
     *
     * @param orderQueryVo
     * @return
     */
    OrderDataVo selectCancelOrderCollect(@Param("orderQueryVo") OrderQueryVo orderQueryVo);


    /**
     * 查询未支付单数、未支付金额
     *
     * @param orderQueryVo
     * @return
     */
    OrderDataVo selectNonPaymentCollect(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 查询售后单数投诉单数
     *
     * @param orderQueryVo
     * @return
     */
    OrderDataVo selectOrderAfterSaleCollect(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 买家数量
     *
     * @param orderQueryVo
     * @return
     */
    Integer SelectClientTotal(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 成交卖家数
     *
     * @param orderQueryVo
     * @return
     */
    Integer selectMakeClientTotal(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 成交会员卖家数
     *
     * @param customerQueryVo
     * @return
     */
    Integer selectMakeMemberTotal(@Param("customerQueryVo") CustomerQueryVo customerQueryVo);

    /**
     * 取消卖家数
     *
     * @param orderQueryVo
     * @return
     */
    Integer selectCancelClientTotal(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 查询时间范围内按小时查询
     *
     * @param orderQueryVo
     * @return
     */
    List<HashMap> selectOrderTodayData(@Param("orderQueryVo") OrderQueryVo orderQueryVo);


    /**
     * 查询订单数据总额
     *
     * @param orderQueryVo
     * @return
     */
    List<HashMap> selectOrderMoneyTotalMap(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 查询总单数
     *
     * @param orderQueryVo
     * @return
     */
    List<HashMap> selectOrderTotalMap(@Param("orderQueryVo") OrderQueryVo orderQueryVo);


    /**
     * 查询成交单数
     *
     * @param orderQueryVo
     * @return
     */
    List<HashMap> selectMakeOrderTotalMap(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 查询订单成交金额
     *
     * @param orderQueryVo
     * @return
     */
    List<HashMap> selectMakeOrderMoneyTotalMap(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 查询取消订单成交金额
     *
     * @param orderQueryVo
     * @return
     */
    List<HashMap> selectCancelMoney(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 查询待售后数量
     *
     * @param orderQueryVo
     * @return
     */
    Integer selectSaleTotal(@Param("orderQueryVo") OrderQueryVo orderQueryVo);

    /**
     * 查询投诉数量
     * @param orderQueryVo
     * @return
     */
    Integer selectComplaintTotal(@Param("orderQueryVo") OrderQueryVo orderQueryVo);


    /**
     * 查询收藏商品会员
     * @param customerQueryVo
     * @return
     */
    Integer selectMembershipCollectNumber(CustomerQueryVo customerQueryVo);
}
